#ifndef PLANER_H_
#define PLANER_H_

#include <memory>

#include "interface/plan.h"
#include "map.h"

class Planer : public PlanInterface {
public:
    Planer(std::vector<std::vector<int>>& grid) { map_ = std::make_unique<GridMap>(grid); };

    // 获取全图弓字路径
    std::vector<Path> makePlan(Point start) override;

    // 获取当前点到目标点的路径
    std::vector<Path> makePlan(Point start, std::vector<Point> goals) override;

    // 贪心算法获取路径
    std::vector<int> GreedyPlan(Point start, std::vector<Point> goals);

    // 模拟退火算法获取路径
    std::vector<int> SAPlan(Point start, std::vector<Point> goals);

private:
    std::unique_ptr<GridMap> map_;
};

#endif